home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / utils / install / query.h < prev    next >
Text File  |  1993-11-21  |  2KB  |  84 lines

  1.  
  2. void query(char *prompt, char *buffer, char *def)
  3. {
  4.   int bptr, blen, k, i;
  5.   fputs(prompt, stdout);
  6.   ansi("\033[1m");
  7.   strcpy(buffer, def);
  8.   bptr = blen = strlen(buffer);
  9.   fputs(buffer, stdout);
  10.   while (1)
  11.   {
  12.     k = getch();
  13.     if (k == 0)
  14.       k = 0x100 | getch();
  15.     switch (k)
  16.     {
  17.       case 3:
  18.         printf("%s<Ctrl-C>\n", ansinorm);
  19.         exit(1);
  20.       case 10:
  21.       case 13:
  22.         buffer[blen] = 0;
  23.         putchar('\n');
  24.     ansi("\033[0m");
  25.         return;
  26.       case 8:
  27.         if (bptr)
  28.         {
  29.           putchar(8);
  30.           putchar(' ');
  31.           putchar(8);
  32.           bptr--;
  33.           blen--;
  34.           for (i=bptr; i<blen; i++)
  35.             buffer[i] = buffer[i+1];
  36.         }
  37.         else
  38.           putchar(7);
  39.         break;
  40.       case 27: /* Escape */
  41.       case 21: /* ^U */
  42.         while (bptr < blen)
  43.           putchar(buffer[bptr++]);
  44.         while (bptr)
  45.         {
  46.           putchar(8);
  47.           putchar(' ');
  48.           putchar(8);
  49.           bptr--;
  50.         }
  51.         blen = 0;
  52.         break;
  53.       case 'K'|0x100: /* left */
  54.         if (bptr)
  55.         {
  56.           putchar(8);
  57.           bptr--;
  58.         }
  59.         else
  60.           putchar(7);
  61.         break;
  62.       case 'M'|0x100: /* right */
  63.         if (bptr < blen)
  64.         {
  65.           putchar(buffer[bptr]);
  66.           bptr++;
  67.         }
  68.         else
  69.           putchar(7);
  70.         break;
  71.       default:
  72.         for (i=blen; i>bptr; i--)
  73.           buffer[i] = buffer[i-1];
  74.         buffer[bptr++] = k;
  75.         blen++;
  76.         for (i=bptr-1; i<blen; i++)
  77.           putchar(buffer[i]);
  78.         for (; i>bptr; i--)
  79.           putchar(8);
  80.     }
  81.   }
  82. }
  83.  
  84.